package routes

import (
	"net/http"

	"gitee.com/anxu/golang-web/src/config"
	"github.com/gorilla/mux"
)

//route  定义一个 Route 结构体用于存放单个路由
type route struct {
	Name        string
	Method      []string
	Pattern     string
	HandlerFunc http.HandlerFunc
}

var _router *mux.Router

//Router 返回一个 mux.Router 类型指针，从而可以当作处理器使用
func Router() *mux.Router {

	if _router != nil {
		return _router
	}
	// 创建 mux.Router 路由器示例
	_router = mux.NewRouter().StrictSlash(true)
	// 遍历 web.go 中定义的所有 webRoutes
	for _, route := range routes {
		// 将每个 web 路由应用到路由器
		_router.Methods(route.Method...).
			Path(route.Pattern).
			Name(route.Name).
			Handler(route.HandlerFunc)
	}
	_router.Use(Auth)

	dir := config.Config.Get("server.assetsPath", "assets").(string)
	// 处理静态资源文件
	assets := http.FileServer(http.Dir(dir))
	_router.PathPrefix("/static/").Handler(http.StripPrefix("/static/", assets))
	return _router
}
